第九天 CPU Scheduling--中
昨天我們說完前兩個演算法,今天從第三個開始繼續講:
FCFS — First Come First-Served
SJF — Shortest-Job-First(exponential averaging)
Priority scheduling
依據優先權來排順序,以整數代表優先權,數字越小優先權越高。
RR(Round Robin)
給每個process一個固定的時間(time quantum ,q)執行,如果執行不完就再去排隊。如果有n個process在ready queue,每個process有1/n CPU時間,一定不會等超過(n-1)q的時間。以下有例圖,q=4:
雖然平均完成時間比SJF高,但這種的回應比較好。而這個演算法要注意的是,q應該要 > context switch time(平均10 usec內)
Multilevel queue
這種演算法將ready queue分成兩個:Foreground(需要交談的)、Background(可以批次的)。而這兩種queue有各自運用的演算法。而在排程時,這兩種queue之間要先做優先順序的排程、CPU時間的分配。
以上把演算法給講完啦!現在我們來說說其他的排程吧!
講完執行緒的排程,現在來說多處理器的排程!
說到這就要講個東西—NUMA:
NUMA,Non-uniform memory access,是將系統分成很多個節點(node),節點內部存取的時間,比跟節點外的存取時間快很多!以下有例圖:
如果在SMP下,要保持每個CPU有最好的效率,需要考慮load balancing(平衡每個CPU),會有週期性的push migration跟pull migration。
push migration:如果有很閒的CPU,會把一些process push到上面。
pull migration:如果有在閒置的processor,會pull等待的task來做。
Multicore Processors會將multiple processor trend到一個chip上,跟傳統的Multiprocessor比起來快很多,而且也比較省power。
明天我們來說最後一部分吧!